"""利用集中趋势2.1中生成的一维行向量，完成离散趋势指标统计："""
import numpy as np
from sklearn.datasets import load_iris  # 从Scikit-learn第三方库中导入鸢尾花数据集

# 鸢尾花数据集中的属性项数据
iris_data = load_iris()
feature_1 = iris_data.data[:, 0]
# 生成的一维特征数据，转换为数组形式
print("生成的一维特征数据：", feature_1, sep='\n')

# 2.4 计算极差（使用函数max(),min()）
print("极差(保留两位小数)：", round(max(feature_1) - min(feature_1), 3))

# 2.5 计算四分位数、四分位数极差。
# （分位数利用np.percentile()函数，例：Q1 = np.percentile(feature_1,25)）
# （四分位数极差IQR=Q3-Q1）
Q1 = np.percentile(feature_1, 25)  # 第1四分位数
Q2 = np.percentile(feature_1, 50)  # 第2四分位数
Q3 = np.percentile(feature_1, 75)  # 第3四分位数
IQR = Q3 - Q1  # 四分位数极差
print("第1四分位数：%.2f" % Q1, "第2四分位数：%.2f" % Q2, "第3四分位数：%.2f" % Q3, "四分位数极差：%.2f" % IQR, sep='\t')

# 2.6 求五数概括(最小值、第1四分位数、中位数、第3四分位数、最大值)
m1 = min(feature_1)  # 最小值
m2 = Q1  # 第1四分位数
m3 = Q2  # 中位数
m4 = Q3  # 第3四分位数
m5 = max(feature_1)  # 最大值
print("最小值：%.2f" % m1, "第1四分位数：%.2f" % m2, "中位数：%.2f" % m3, "第3四分位数：%.2f" % m4, "最大值：%.2f" % m5, sep='\t')

# 2.7 计算方差（np.var()）和标准差（np.std()）
variance = np.var(feature_1)
standard_deviation = np.std(feature_1)
print("方差：%.2f" % variance, "标准差：%.2f" % standard_deviation, sep='\t')
